/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestorSimilar;

import gestorSimilar.Pagina;
import gestorSimilar.Tema;
import util.exceptions.PaginaExistenteException;
import util.exceptions.PaginaNoExistenteException;
import java.util.HashMap;
import java.util.LinkedList;
import gestorSimilar.Recomendaciones;

/**
 *
 * @author Nacho
 */
public class Gestor {
    String apiKey;
    HashMap<Integer, Recomendaciones> mRec;

    public Gestor(String apiKey){
        //throw new UnsupportedOperationException();
        mRec = new HashMap<Integer, Recomendaciones>();
    }
    public void logout(int idUser){
        try {
            mRec.remove(idUser);
        } catch (Exception e) {
        }
    }
    public LinkedList<Tema> listaDeTemas(){
        return Tema.getTodosTemas();
    }
    public void agregarPagina(String url, LinkedList<Tema> temas) throws PaginaExistenteException{
        Pagina pagina = Pagina.insertaPagina(url, temas);
    }
    public void eliminarPagina(String url){
        Pagina.eliminaPagina(url);
    }
    public void votarArriba(String url) throws PaginaNoExistenteException{
        Pagina p = Pagina.obtenPagina(url);
        p.votaArriba();
    }
    public void votarAbajo(String url) throws PaginaNoExistenteException{
        Pagina p = Pagina.obtenPagina(url);
        p.votaAbajo();
    }
    public Pagina siguientePagina(int idUsuario) throws PaginaNoExistenteException{
        Recomendaciones rec = mRec.get(idUsuario);
        if (rec == null){
            rec = Recomendaciones.getRecomendaciones(idUsuario);
            mRec.put(idUsuario, rec);
        }
        return rec.next();
    }
    public void cambiarReputacion(String url, int reputacion)throws PaginaNoExistenteException{
        Pagina p = Pagina.obtenPagina(url);
        p.setReputacion(reputacion);
        
    }
    public int getReputacion(String url){
        Pagina p = Pagina.obtenPagina(url);
        return p.getReputacion();
    }
    public void cambiarTemaPagina(String url, LinkedList<Tema> temas){
        throw new PaginaNoExistenteException();   
    }
    public LinkedList<Tema> getTemasPagina(String url){
        Pagina p = Pagina.obtenPagina(url);
        return p.getTemas();
        
    }
    public LinkedList<Pagina> getTodasPaginas(){
        return Pagina.getTodasLasPaginas();
    }
    
    
    public Pagina getPagina(String url){
        Pagina p = Pagina.obtenPagina(url);
        return p;
    }
    
    public LinkedList<Tema> getTodosTemas(){
        return Tema.getTodosTemas();
    }
    
    public static void main(String[] args) {
        Gestor g = new Gestor("asd");
        LinkedList<Tema> selec = g.getTemasPagina("http://yahoo.com");
        System.out.println();
        
        
       
        
    }
    
    
    
}
